//package com.jiot.plugin.motan.client;
//
//import java.util.Set;
//import com.jfinal.aop.Aop;
//import com.jfinal.kit.Prop;
//import com.jfinal.kit.PropKit;
//import com.weibo.api.motan.config.ProtocolConfig;
//import com.weibo.api.motan.config.RefererConfig;
//import com.weibo.api.motan.config.RegistryConfig;
//import cn.hutool.core.util.ClassUtil;
//import rpc_service.MyRPC;
//
//public class RefererKit {
//	
//	//https://github.com/weibocom/motan/wiki/zh_configuration
//	private static Prop rpcProp;
//	
//	public static void setRpcProp(String configFile){
//		rpcProp = PropKit.use(configFile);
//	}
//	
//	
//	public static void startLinkRPC() throws Exception {
//		//先获取所有的接口
//    	Set<Class<?>> sets = ClassUtil.scanPackageByAnnotation(rpcProp.get("scanPackage"), MyRPC.class);
//    	System.out.println(sets.size());
//    	for(Class clazz : sets) {
//    		//获取这个类关配置组
//    		MyRPC rpcExport = (MyRPC) clazz.getAnnotation(MyRPC.class);
//    		if(!rpcExport.isLink()) {
//    			continue;
//    		}
//        	ProtocolConfig protocol = new ProtocolConfig();
//            protocol.setId(rpcExport.protocolId());
//            protocol.setName(rpcExport.protocolName());
//            protocol.setDefault(rpcExport.protocolDefault());
//        	
//            RegistryConfig registry = new RegistryConfig();
//            registry.setRegProtocol(rpcExport.registryRegProtocol());
//            registry.setAddress(rpcExport.registryAddress());
//            registry.setCheck(rpcExport.registryCheck()); 
//            registry.setDefault(rpcExport.registryDefault());
//            
//            RefererConfig refererConfig = new RefererConfig();
//            refererConfig.setRegistry(registry);
//            refererConfig.setProtocol(protocol);
//            refererConfig.setGroup(rpcExport.Group());
//            refererConfig.setVersion(rpcExport.Version());
//            refererConfig.setShareChannel(rpcExport.IsShareChannel());
//            refererConfig.setRequestTimeout(rpcExport.RequestTimeout());
//            
//            linkRPC(clazz, refererConfig);
//            
//    	}
//    	
//    	
////    	System.out.println(MotanDemoService.class.getMethod("hello", String.class).invoke("123"));
//	}
//	
//	public static <T> boolean linkRPC(Class interfaceClass, RefererConfig refererConfig) {
//		
////		synchronized(this) {
//			refererConfig.setInterface(interfaceClass);//这个必须是接口
//			Object obj = refererConfig.getRef();
//			Class clazz = obj.getClass();
//			Aop.inject(clazz);
////			ObjectMapper objectMapper = new ObjectMapper();
////			objectMapper.convertValue(Object fromValue, Class<T> toValueType);
//			
//			System.out.println(obj.getClass());
////			AopManager.me().addMapping(from, to);
////	        Aop.inject(refererConfig.getRef());
////			interfaceClass
////		}
////			AopManager.me().setAopFactory(aopFactory);
////			MotanDemoService service = (MotanDemoService2) motanDemoServiceReferer.getRef();
////	        for (int i=0;i<10;i++) {
////				System.out.println(service.hello2("motan2"));
////			}
//			
//        return true;
//        
//    }
//	
//	
//	
//}
